home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1035 / 1035.xpi / chrome / 1clickweather.jar / content / 1clickweather / js / data / obs.js < prev    next >
Text File  |  2010-01-05  |  9KB  |  241 lines

  1. // ∩┐╜ 2005 The Weather Channel Interactive, Inc.  All Rights Reserved.
  2.  
  3. // handle the obs data
  4. oDataSources.Obs = function(){ };
  5. oDataSources.Obs.prototype = new oDataSourcesStub;
  6.  
  7. function Observation() {}
  8. Observation.inherits(oDataSourcesStub);
  9. var Obs = new Observation();
  10.  
  11. Observation.prototype.setTooltip = function(){
  12.    try{
  13.       var sIcon = false;
  14.       var sLabel = false;
  15.       switch(GlobalUserConfig.getAllProfiles().getDefaultProfile().getCurrentCond().getToolTip().getType()){
  16.          case "icon":
  17.             sIcon = true;
  18.             break;
  19.          case "iconandlabel":
  20.             sIcon = true;
  21.             sLabel = true;
  22.             break;
  23.          case "label":
  24.             sLabel = true;
  25.             break;
  26.       }
  27.  
  28.       // first, we make a tooltip object
  29.       var _tooltip = document.createElement("tooltip");
  30.       _tooltip.setAttribute("id", ToolbarContainers['CurrentCond'].getID() + ".Tooltip"); // and give it an id
  31.  
  32.       var ttOuterVbox = document.createElement("vbox");
  33.       ttOuterVbox.setAttribute("class", "panelText");
  34.       _tooltip.appendChild(ttOuterVbox);
  35.  
  36.       // now we make a pair of hboxs
  37.       var ttTopHbox = document.createElement("hbox");
  38.       ttOuterVbox.appendChild(ttTopHbox);
  39.       var ttBottomHbox = document.createElement("hbox");
  40.       ttOuterVbox.appendChild(ttBottomHbox);
  41.  
  42.       // now we make a pair of vboxs
  43.       var ttTImageVbox = document.createElement("vbox");
  44.       ttTopHbox.appendChild(ttTImageVbox);
  45.       var ttTTextVbox = document.createElement("vbox");
  46.       ttTopHbox.appendChild(ttTTextVbox);
  47.  
  48.       if(sIcon){
  49.          // the image goes in the first vbox
  50.          XULSimple.Image(ttTImageVbox, this.iconPath(this.Data['icon'], 'wx', 'large'), 64, 64);
  51.       }
  52.  
  53.       if(sLabel){
  54.          var l = new oXUL.Label(ttTTextVbox, "As of: " + this.Data['lsup']);
  55.          l.Bold();
  56.          l.Make();
  57.   
  58.          XULSimple.Label(ttTTextVbox, "in " + this.Data['dnam']);
  59.          XULSimple.Spacer(ttTTextVbox, 5);
  60.  
  61.          var l = new oXUL.Label(ttTTextVbox, this.Data['t']);
  62.          l.Bold();
  63.          l.Make();
  64.  
  65.         /*
  66.          XULSimple.Label(ttTTextVbox, "Temperature: " + this.Data['tmp'] + " " + Degrees + this.Data['ut']);
  67.          XULSimple.Label(ttTTextVbox, "Dew Point: " + this.Data['dewp'] + " " + Degrees + this.Data['ut']);
  68.          XULSimple.Label(ttTTextVbox, "Humidity: " + this.Data['hmid'] + "%");
  69.          XULSimple.Label(ttTTextVbox, "Visibility: " + this.Data['vis'] + " " + this.Data['ud']);
  70.          XULSimple.Label(ttTTextVbox, "Pressure: " + this.Data['bar.r'] + " " + this.Data['up'] + " and " + this.Data['bar.d']);
  71.          * 
  72.          */
  73.          XULSimple.Label(ttTTextVbox, "Temperature: " + this.Data['tmp'] + Degrees + this.Data['ut']);
  74.          XULSimple.Label(ttTTextVbox, "Dew Point: " + this.Data['dewp'] + Degrees + this.Data['ut']);
  75.          XULSimple.Label(ttTTextVbox, "Humidity: " + this.Data['hmid'] + "%");
  76.          XULSimple.Label(ttTTextVbox, "Visibility: " + this.Data['vis'] + " " + this.Data['ud']);
  77.          XULSimple.Label(ttTTextVbox, "Pressure: " + this.Data['bar.r'] + " " + this.Data['up'] + " and " + this.Data['bar.d']);
  78.  
  79.          if(this.Data['wind.t'] == "CALM"){
  80.             XULSimple.Label(ttTTextVbox, "Winds: CALM");
  81.          }else{
  82.             XULSimple.Label(ttTTextVbox, "Winds: " + this.Data['wind.t'] + " at " + this.Data['wind.s'] + " " + this.Data['us']);
  83.          }
  84.          XULSimple.Spacer(ttTTextVbox, 5);
  85.       }
  86.  
  87.       // now we make a pair of vboxs
  88.       var ttBImageVbox = document.createElement("vbox");
  89.       ttBottomHbox.appendChild(ttBImageVbox);
  90.       var ttBTextVbox = document.createElement("vbox");
  91.       ttBottomHbox.appendChild(ttBTextVbox);
  92.  
  93.       if(sIcon){
  94.          // the image goes in the first vbox
  95.          XULSimple.Image(ttBImageVbox, this.iconPath(this.Data['moon.icon'], 'moon'), 64, 64);
  96.       }
  97.  
  98.       if(sLabel){
  99.          var l = new oXUL.Label(ttBTextVbox, "Tonight:");
  100.          l.Bold();
  101.          l.Make();
  102.  
  103.          XULSimple.Label(ttBTextVbox, "Sunset: " + this.Data['suns']);
  104.          XULSimple.Label(ttBTextVbox, "Moon Phase: " + this.Data['moon.t']);
  105.       }
  106.  
  107.  
  108.       _tooltip.setAttribute("noautohide", true);
  109.       _tooltip.setAttribute("align", "center");
  110.    }catch(e){
  111.       debugLog("catch in setTooltip: " + this.id + " " + e);
  112.       return(false);
  113.    }
  114.  
  115.    try{
  116.       var p = document.getElementById(GlobalToolbarLocation)
  117.       var t = document.getElementById(ToolbarContainers['CurrentCond'].getID() + ".Tooltip");
  118.       if(p && t)
  119.          p.removeChild(t);
  120.    }catch(e){
  121.       debugLog("error removing tooltip: " + this.id + " " + e);
  122.    }
  123.  
  124.    try{
  125.       document.getElementById(GlobalToolbarLocation).appendChild(_tooltip);
  126.    }catch(e){
  127.       debugLog("error appending tooltip: " + this.id + " " + e);
  128.    }
  129. }
  130.  
  131.    // parse an xml doc into our obs object
  132. Observation.prototype.parseFunc = function(xmlDoc){
  133.    var configutil = new ConfigUtils();
  134.    try{
  135.       configutil.convertData(GlobalUserConfig, "Obs", xmlDoc);
  136.    }catch(e){
  137.       debug('error converting obs: ' + e);
  138.    }
  139.  
  140.    this.oldData = this.Data;
  141.    this.Data = {}; // flush the Data hash
  142.  
  143.    this.parseHeader(xmlDoc);
  144.  
  145.    try{
  146.       // now we move on to the current conditions
  147.       var cc = xmlDoc.getElementsByTagName("cc")[0].childNodes;
  148.       var x = 0;
  149.  
  150.       // loop through all the children under the cc node
  151.       for(x = 0; x < cc.length; x++){
  152.          try{
  153.             // if the nodes we find only have a value and no children, make them into variables
  154.             if((cc[x].childNodes.length == 1) && (typeof(cc[x].firstChild.nodeValue) == "string")){
  155.                this.Data[cc[x].nodeName] = cc[x].firstChild.nodeValue;
  156.             }else if(cc[x].childNodes.length > 1){
  157.                // if the child has more than one node under it, we deal with it a bit differently.
  158.                // we assume there will only be one more level below the current children so
  159.                // now we will make keys in this.Data[] names after the topchild.bottomchild like 'bar.r'
  160.  
  161.                var child = cc[x].childNodes;
  162.                var y = 0;
  163.                for(y = 0; y < child.length; y++){
  164.                   // if this is not a valid node name, skip it
  165.                   if(child[y].nodeName == "#text"){
  166.                      continue;
  167.                   }
  168.  
  169.                   // otherwise, make a new entry in this.Data for it
  170.                   if(typeof(child[y].firstChild.nodeValue) == "string"){
  171.                      this.Data[cc[x].nodeName + "." + child[y].nodeName] = child[y].firstChild.nodeValue;
  172.                   }
  173.                }
  174.             }
  175.          }catch(e){
  176.             debug('error parsing xml for obs: ' + e.message);
  177.             debugLog("error parsing obs data" + e);
  178.          }
  179.  
  180.       }
  181.    }catch(e){
  182.       debugLog("catch in parse: " + this.id + " " + e);
  183.    }
  184.  
  185.    this.run++;
  186.    this.setPanel();
  187.    this.Finish();
  188. }
  189.  
  190.  
  191. Observation.prototype.setPanel = function(){
  192.    try{
  193.       for(var p in this.PanelList){
  194.          var panel = this.PanelList[p];
  195.  
  196.          // now we make a pair of hboxs
  197.          var panelHbox = document.createElement("hbox");
  198.          panelHbox.setAttribute("context", ToolbarContainers['CurrentCond'].getID() + ".Tooltip");
  199.  
  200.          var url = this.getLink('localcity');
  201.          //panelHbox.setAttribute("onclick", "openLinkInNewTab('" + url + "');");
  202.           panelHbox.setAttribute("uri", url);
  203.  
  204.          var panelText = "Now: " + this.Data['t'] + " and " + this.Data['tmp'] + Degrees + this.Data['ut'];
  205.  
  206.          switch(GlobalUserConfig.getAllProfiles().getDefaultProfile().getCurrentCond().getType()){
  207.             case 'icon':
  208.                XULSimple.Image(panelHbox, this.iconPath(this.Data['icon'], 'wx', 'small'), 20, 20);
  209.                break;
  210.  
  211.             case 'label':
  212.                XULSimple.Label(panelHbox, panelText);
  213.                break;
  214.  
  215.             case 'iconandlabel':
  216.                XULSimple.Label(panelHbox, panelText);
  217.                XULSimple.Image(panelHbox, this.iconPath(this.Data['icon'], 'wx', 'small'), 20, 20);
  218.                break;
  219.          }
  220.  
  221.  
  222.  
  223.          ToolbarContainers[panel].Show();
  224.          ToolbarContainers[panel].drawFromHbox(panelHbox);
  225.           panelHbox.addEventListener('click',interClickCurrent,true);
  226.  
  227.          if(GlobalUserConfig.getAllProfiles().getDefaultProfile().getCurrentCond().getToolTip().getIsEnabled() == "true"){
  228.             ToolbarContainers[panel].enableTooltip();
  229.             this.setTooltip();
  230.          }else{
  231.             ToolbarContainers[panel].disableTooltip();
  232.          }
  233.       }
  234.    }catch(e){
  235.       debug("error setting obs panel: " + e);
  236.       debugLog("error creating Obs panels in Obs.setPanel " + e);
  237.    }
  238. }
  239.  
  240.  
  241.